package com.oracle.coherence.patterns.security.accesscontrol;

/**
 * Interface implemented by classes that represent Actions that
 * may be permissioned.
 * <p/>
 *
 * @author Jonathan Knight
 */
public interface Action {

    /**
     * @return the bit-mask for this Action
     */
    int getFlagValue();

    /**
     * @return the name of this action
     */
    String getActionName();

    /**
     * Returns the instance of this Action class represented by the
     * specified name.
     * <p/>
     *
     * @param name - the name of the action to return
     * @return an instance of this class represented by the specified name
     */
    Action fromName(String name);

    /**
     * @return All the unique instance of this Action class.
     */
    Action[] actionList();
}
